home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Oh!X 2001 Spring
/
Oh!X 2001 Spring Special CD-ROM (Japan).7z
/
Oh!X 2001 Spring Special CD-ROM (Japan) (Track 1).bin
/
JAVA
/
spman040.lzh
/
scroll.java
< prev
next >
Wrap
Text File
|
1997-02-12
|
3KB
|
142 lines
import java.applet.Applet;
import java.awt.*;
public class scroll extends Applet implements Runnable {
SpriteControl sc;
MediaTracker mt;
Thread thread=null;
int scr1, scr2;
int chr=0;
int bgwidth[] = { 160, 180 };
int bgheight[] = { 120, 120 };
int bgnum[] = { 14, 24 };
public void init(){
Image image;
resize( 160, 120 );
sc = new SpriteControl();
// パターン数 キャラクタ2個 太い柱1個 細い柱1個
// プレーン数 キャラクタ1枚
sc.Create( 4, 1, 160, 120, this );
mt = new MediaTracker( this );
// キャラクタイメージ
image = getImage( getDocumentBase(), "scroll/chr1.gif" );
mt.addImage( image, 0 );
sc.Define( 0, image );
image = getImage( getDocumentBase(), "scroll/chr2.gif" );
mt.addImage( image, 0 );
sc.Define( 1, image );
// 太い柱イメージ
image = getImage( getDocumentBase(), "scroll/thick.gif" );
mt.addImage( image, 0 );
sc.Define( 2, image );
// 細い柱イメージ
image = getImage( getDocumentBase(), "scroll/thin.gif" );
mt.addImage( image, 0 );
sc.Define( 3, image );
// 背景イメージ
image = getImage( getDocumentBase(), "scroll/back.gif" );
mt.addImage( image, 0 );
sc.SetBGImage( image );
int x, y, i=0;
// バックグラウンド作成 太い柱14枚 細い柱24枚
sc.CreateBackground( 2, bgwidth, bgheight, bgnum );
// 太い柱のパターンをバックグラウンドに設定
// 柱の間隔80
for( y=0; y<7; y++ ){
for( x=0; x<2; x++ ){
sc.SetBGPattern( 0, x+y*2, x*80, y*16, 2 );
}
}
i++;
// 細い柱のパターンをバックグラウンドに設定
// 柱の間隔60
for( y=0; y<8; y++ ){
for( x=0; x<3; x++ ){
sc.SetBGPattern( 1, x+y*3, x*60, y*12, 3 );
}
}
sc.Show();
sc.BGShow();
// バックグラウンドプレーン0を最前面に表示
sc.SetBGPriority( 0, 0 );
scr1 = 72;
scr2 = 44;
}
public void update( Graphics g ){
paint( g );
}
public void paint( Graphics g ){
if( mt.checkID( 0 ) ){
sc.Display( g, 0, 0, this );
} else {
g.drawString( "Loading...", 0, 12 );
}
}
public void start(){
if( thread==null ){
thread = new Thread( this );
thread.start();
}
}
public void stop(){
if( thread!=null ){
thread.stop();
thread = null;
}
}
public void run(){
try {
mt.waitForID( 0 );
} catch( InterruptedException e ){
return;
}
while( true ){
try {
Thread.sleep( 100 );
} catch( InterruptedException e ){
break;
}
ScrollThick();
MoveChar( 0 );
ScrollThin();
repaint();
}
}
int MoveChar( int i ){
int x, y, no = 0;
// キャラクタアニメーション
chr++;
if( chr>=4 ) chr = 0;
x = (160-32)/2;
y = 73;
switch( chr ){
case 0: no = 0;
break;
case 1: x += 4;
no = 0;
break;
case 2: y -= 4;
no = 1;
break;
case 3: x -= 4;
no = 1;
}
sc.Move( i++, x, y, no );
return i;
}
void ScrollThick(){
// 太い柱オフセット値加算
scr1 += 4;
if( scr1>=160 ) scr1 -= 80*2;
// 太い柱スクロール
sc.BGScroll( 0, scr1, 0 );
}
void ScrollThin(){
// 細い柱オフセット値加算
scr2 += 3;
if( scr2>=160 ) scr2 -= 60*3;
// 細い柱スクロール
sc.BGScroll( 1, scr2, 0 );
}
}